[Linux]RX(受信)パケットのdropped(損失)解消を試みる

您所在的位置:网站首页 linux rx [Linux]RX(受信)パケットのdropped(損失)解消を試みる

[Linux]RX(受信)パケットのdropped(損失)解消を試みる

2024-07-16 12:47| 来源: 网络整理| 查看: 265

ホーム > サーバー > [Linux]RX(受信)パケットのdropped(損失)解消を試みる

  2016/03/25     2018/04/07    HimaJyun

前回の記事で自分の運営する鯖のNICをIntel製の物に載せ換えました

「あー、満足満足」と飯でも食ってやがるのですが…… カ二の時からdroppedが稀に発生していたのがふと気になったので、解消を試みてみました。

スポンサーリンク

dropped対策(バッファ拡張)

まず最初に、droppedとは落とす、的な意味で「損失」を表します。

損失はifconfigコマンドで確認できます。 その中でも転送系のエラーは以下の項目です。

RX packets:48502870 errors:0 dropped:153 overruns:0 frame:0 TX packets:106717681 errors:0 dropped:0 overruns:0 carrier:0

RXがReceive exchangeで受信、TXがTransmit exchangeで送信です。 RX(受信)パケットにdropped(損失)が生じていますね。

droppedが出ている事自体は前々から認識していましたが、「TCPって再送とかするし、損失も極少だし別に良いや」と放置していました。ダチョウアルゴリズムって奴ですね。

ただ、せっかくIntelNICに載せ換えたのですし、キモチワルイので解消を試みてみます。

原因

どうやら、受信パケットが沢山来ている際にはバッファに取り込むようです、それを捌くよりも早く次のパケットが来て……を繰り返すとバッファが一杯になってしまう様です。

バッファが一杯になると、古いデータを上書きして次のパケットを取り込むようです。

ですので、単純明快にバッファのサイズを拡張してやれば良いのです。

バッファ拡張

現在のバッファサイズは「ethtool -g」で確認できます。

test@server:~$ ethtool -g eth0 Ring parameters for eth0: Pre-set maximums: RX: 4096 RX Mini: 0 RX Jumbo: 0 TX: 4096 Current hardware settings: RX: 256 RX Mini: 0 RX Jumbo: 0 TX: 256

「Pre-set maximums」が設定出来る最大値で「Current hardware settings」が現在設定している値です。

現在は256が設定されている様ですね、倍々に拡張して行くのが一般的なようです。

設定の変更は「ethtool -G」を使用します。現在、倍の512に拡張します。

eth0のRXバッファを512に拡張する際には「ethtool -G eth0 rx 512」を実行します(要:root)

test@server:~$ sudo ethtool -G eth0 rx 512 test@server:~$ ethtool -g eth0 Ring parameters for eth0: Pre-set maximums: RX: 4096 RX Mini: 0 RX Jumbo: 0 TX: 4096 Current hardware settings: RX: 512 RX Mini: 0 RX Jumbo: 0 TX: 256

どうやら512になったようです。

しかし、この設定は起動している間のみ有効で、再起動すると元の256に戻ってしまいます。

永続的に設定を変更したい場合は以下の様に設定します。

設定の永続化

要は、起動時にこのコマンドを実行出来れば良いわけです。

Ubuntuであれば「/etc/network/interfaces」を開いて「post-up」と言う機能を使えば良いらしいです。

「post-up」初耳なので調べて見た所、どうやらネットワークが有効化された後で実行される様です。

反対に、ネットワークがダウンしてから実行されるのは「post-down」

有効化される前に実行されるのが「pre-up」、と言う事は「pre-down」もあります。

「post-up」で先程のコマンドを実行する訳ですね。エディタで「/etc/network/interfaces」を開いてから以下の様に設定すれば良いのです。

auto eth0 iface eth0 inet static address 192.168.1.2 netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 192.168.1.1 post-up ethtool -G eth0 rx 512

これで、再起動した後に「ethtool -g eth0」を実行してみて下さい。 RXパケットのバッファサイズが512に設定されているはずです。

もし、CentOSなどのRHEL系でしたら「/etc/rc.d/rc.local」にでも書けば良いのではないでしょうか? あいにく、Ubuntuしか使えない者でしてね。

ちなみにですが、ethtoolは引数が小文字だと確認、大文字だと設定らしいです。 「ethtool -g」は小文字なので確認「ethtool -G」は大文字なので設定、ですね。

 - サーバー Linux, Ubuntu

スポンサーリンク

B! LINEへ送る

サイト改装中につきコメント欄停止中です。ご用の方はGitHubかメールからお願いします。

  関連記事 (一部広告含む) PREV UbuntuServerにIntelNICを載せてみる NEXT [Ubuntu]ローカルIPアドレスを固定にする(18.04/16.04)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3